{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# TensorFlow Multi-Layer Perceptron"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "A multi-layer perceptron class for binary and multi-class classification tasks."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> from mlxtend.tf_classifier import TfMultiLayerPerceptron"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Overview"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "(A more detailed tutorial on multi-layer perceptrons is in preparation.)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![](./TfMultiLayerPerceptron_files/mlp_overview_1.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![](./TfMultiLayerPerceptron_files/mlp_overview_2.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Please also see the activation function cheatsheet at [`general_concepts.activation-functions`](../general_concepts/activation-functions.md)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### References\n",
    "\n",
    "- Srivastava, Nitish, et al. [*\"Dropout: A simple way to prevent neural networks from overfitting.\"*](http://dl.acm.org/citation.cfm?id=2670313) The Journal of Machine Learning Research 15.1 (2014): 1929-1958."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 1 - Gradient Descent"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Each integer in the `hidden_layers` list argument specifies the number of neurons for the respective layer; via the `activations`, we specify the activation functions for the individual hidden layer. Below, we initialize a multi-layer perceptron with 1 hidden layer using the logistic sigmoid activation. Furthermore, we train the network via simple gradient descent training by setting `optimizer='gradientdescent'` and `minibatches=1`. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Iteration: 20/20 | Cost 0.55 | Elapsed: 0:00:00 | ETA: 0:00:00"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x114141f60>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from mlxtend.tf_classifier import TfMultiLayerPerceptron\n",
    "from mlxtend.data import iris_data\n",
    "from mlxtend.plotting import plot_decision_regions\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# Loading Data\n",
    "X, y = iris_data()\n",
    "X = X[:, [0, 3]] # sepal length and petal width\n",
    "\n",
    "# standardize\n",
    "X[:,0] = (X[:,0] - X[:,0].mean()) / X[:,0].std()\n",
    "X[:,1] = (X[:,1] - X[:,1].mean()) / X[:,1].std()\n",
    "\n",
    "mlp = TfMultiLayerPerceptron(eta=0.5, \n",
    "                             epochs=20, \n",
    "                             hidden_layers=[10],\n",
    "                             activations=['logistic'],\n",
    "                             optimizer='gradientdescent',\n",
    "                             print_progress=3, \n",
    "                             minibatches=1, \n",
    "                             random_seed=1)\n",
    "\n",
    "mlp.fit(X, y)\n",
    "\n",
    "plt.plot(range(len(mlp.cost_)), mlp.cost_)\n",
    "plt.xlabel('Iterations')\n",
    "plt.ylabel('Cost')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Continue the training if cost could be further decreased via additional epochs. Instead of training the classifier another 20 epochs, we modify the epochs and set them to 550. Also, we want to make sure to set `init_weights` to `False` in order to re-use the model parameters from the previous training."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Iteration: 550/550 | Cost 0.12 | Elapsed: 0:00:01 | ETA: 0:00:00"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1060b4a90>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "mlp.epochs = 550\n",
    "mlp.fit(X, y, init_params=False)\n",
    "plt.plot(range(len(mlp.cost_)), mlp.cost_)\n",
    "plt.xlabel('Iterations')\n",
    "plt.ylabel('Cost')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1147ba6a0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_decision_regions(X=X, y=y, clf=mlp)\n",
    "plt.title('Logistic Sigmoid MLP - Gradient Descent')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "#### Predicting Class Labels"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Predicted class labels: [0 1 2]\n"
     ]
    }
   ],
   "source": [
    "print('Predicted class labels:', mlp.predict(X[[0, 99, 149]]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Predicting Class Probabilities"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Predicted class probabilities:\n",
      " [[  9.92696404e-01   7.30253896e-03   1.04788933e-06]\n",
      " [  1.58569030e-03   9.77745533e-01   2.06688400e-02]\n",
      " [  5.52368192e-06   1.68280497e-01   8.31713974e-01]]\n"
     ]
    }
   ],
   "source": [
    "print('Predicted class probabilities:\\n', mlp.predict_proba(X[[0, 99, 149]]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 2 - Stochastic Gradient Descent"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Stochastic gradient descent training sample by sample can be achieved by setting the number of minibatches equal to the number of samples in the training dataset; everything between `minibatches=1` and `minibatches=len(y)` is \"minibatch\" stochastic gradient descent. Below, we train a network using 10 minibatches."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Iteration: 100/100 | Cost 0.13 | Elapsed: 0:00:01 | ETA: 0:00:00"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1060b4ba8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/Sebastian/miniconda3/lib/python3.5/site-packages/ipykernel/__main__.py:31: DeprecationWarning: Note that importing this function from mlxtend.evaluate has been deprecated and will not longer be supported in mlxtend 0.6. Please use`from mlxtend.plotting import plot_decision_regions` instead.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nT7byOj99+ClnOxQ4pgDx+o0nWz+FLDtUOaCIdIdm+4uIiESMkr+IiEjEaNi/lwnqjnN++slWXuen\nDz/lbOnPy9RPEPH6jSdbP4UsO1Q5oIh0h5J/LxHUHef89DOwb192x2JcmUh0OJe9OxZj1KBBWfvw\nU842atAgdnbSz05g1KBBgcQ7sG9fX/Fk62f/gQOzricofssBRUQyMRfwnc967IknQhZQOPip6c5W\n5++Xn36y1bPf9de/sm7r1g6P7z9wIBd//OMAvtr8+OGHWb1lS4c2owYN4r/PPtt3vH7ahKXO3y/V\n+YtIB6ef7uvWn0r+JaDUarr9xPvq0qVdXpfg/uR1CQoVT5i2n4hIt/lM/hr2LwGlVtPtJ16/1yUo\nVDwiIlGi5F9CSq2m23cNfwDXJQgqHhGRKFCpn4iISMQo+YuIiESMhv1LSKnVdPuu4Q/gugRBxSMi\nEgVK/iWg1Gq6/cQb1HUJgopHRCRKVOpXIkqtpruQ1yUIKh4RkZKnOn8REZGI8Zn8NeFPREQkYpT8\nRUREIkbJX0REJGKU/EVERCJGyV9ERCRilPxFREQiRslfREQkYpT8RUREIkbJX0REJGKU/EVERCJG\nyV9ERCRilPxFREQiRslfREQkYpT8RUREIkbJX0REJGKU/EVERCJGyV9ERCRilPxFREQiJi/J38wO\nNLNfm9lyM2sys3fN7Hozq8jH+kRERMS/8jz1ewRgwEXAMuB9wK+BGmBantYpIiIiPuQl+TvnngKe\nSln0LzP7KXAJSv4iIiJFVchz/gOALQVcn4iIiGRQkORvZmOBy4FfFWJ9IiIi0rmckr+Z3WhmiS5+\nWs3ssLTn1AF/Af7gnLs3yOBFREQkd7me8/8pcF+WNsvb/mNmI4HngZedc1/xs4LpL77I9Jde6rB8\n6uTJTJ0yJYdQRUREJBNzzuWnY++I/3ngFeB853dFTzyRn4BERER6u9NPNz/N8jLbP3nEPwtYgTe7\nf5iZF49zbkM+1ikiIiL+5KvO/6PAIcmfVcllBjigLE/rFBERER/yMtvfOXe/c64s7SfmnFPiFxER\nKTJd219ERCRilPxFREQiRslfREQkYpT8RUREIkbJX0REJGKU/EVERCJGyV9ERCRilPxFREQiRslf\nREQkYpT8RUREIkbJX0REJGKU/EVERCJGyV9ERCRilPxFREQiRslfREQkYpT8RUREIkbJX0REJGKU\n/EVERCJGyV9ERCRilPxFREQixpxzxY4hXegCEhERKRHmp5GO/EVERCJGyV9ERCRilPxFREQiRslf\nREQkYpT8RUREIkbJX0REJGKU/ENm+vTpxQ4h9LSNstM2yk7bKDtto+xKdRsp+YdMqX6QCknbKDtt\no+y0jbLTNsquVLeRkr+IiEjEKPmLiIhEjJK/iIhIxCj5i4iIREwYb+wTaWY21TlXmjNICkTbKDtt\no+y0jbLTNsquVLeRkr+IiEjEaNhfREQkYpT8RUREIkbJX0REJGKU/EVERCJGyV9ERCRilPxFREQi\nRsk/hMzsQDP7tZktN7MmM3vXzK43s4pixxYmZna1mf3NzHaa2ZZixxMGZvZVM1thZrvMbJ6ZfbDY\nMYWJmU02s8fNbI2ZJczs08WOKWzM7NtmNt/MtpvZBjN7zMwOK3ZcYWJml5jZIjNrSP7MMbOPFzuu\nXCj5h9MRgAEXAUcBXwcuAX5YzKBCqAJ4CPhlsQMJAzP7AvAz4DrgGGAR8JSZDSlqYOHSB1gIXAbo\nIieZTQZuB04ATsX7O3vazPYralThsgr4FnAscBzwPDDDzI4salQ50EV+SoSZfRO4xDk3ttixhI2Z\nXQD83Dk3qNixFJOZzQP+7py7Mvm74X1J3eacu6mowYWQmSWAzzjnHi92LGGW3HncCJzknHu52PGE\nlZltBr7pnLuv2LH4oSP/0jEA0NC2ZJQ8JXQc8FzbMuft2T8LTCpWXNIrDMAbJdH3TwZmFjOzc4Aa\nYG6x4/GrvNgBSHZmNha4HPhGsWOR0BoClAEb0pZvAA4vfDjSGyRHj24BXnbO/bPY8YSJmb0PL9lX\nA43Amc65JcWNyj8d+ReQmd2YnGTU2U9r+sQaM6sD/gL8wTl3b3EiL5zubCMRyZs78OYdnVPsQEJo\nCTAemIA37+gBMzuiuCH5pyP/wvopkO180PK2/5jZSLyJJC87576Sz8BCJKdtJO02Aa3A8LTlw4H1\nhQ9HSp2Z/QL4BDDZObeu2PGEjXMuzt7votfNbAJwJXBp8aLyT8m/gJxzm4HNftomj/ifB14BvpTP\nuMIkl20keznnWszsVeAU4HFoH7I9BbitmLFJ6Ukm/jOAKc65lcWOp0TEgKpiB+GXkn8IJY/4ZwEr\ngGnAMO97HJxz6ed0I8vMRgODgAOBMjMbn3xoqXNuZ/EiK5qbgd8kdwLm45WI1gC/KWZQYWJmfYCx\neKW0AIckPzdbnHOrihdZeJjZHcBU4NPATjNrG01qcM7tLl5k4WFmP8I7HbsSqAXOA6YAHytmXLlQ\nqT7cxo4AAAC6SURBVF8IJUvX0s/vG94E7rIihBRKZnYf8MUMD53snJtd6HjCwMwuw9thHI5Xz/41\n59yC4kYVHmY2BXiBjjX+9zvnIjPC1pVkCWSmxHChc+6BQscTRmb2a+AjwP5AA/AG8GPn3PNFDSwH\nSv4iIiIRo9n+IiIiEaPkLyIiEjFK/iIiIhGj5C8iIhIxSv4iIiIRo+QvIiISMUr+IiIiEaPkLyIi\nEjFK/iIiIhGj5C8iIhIxSv4iIiIR8/8DrE2rZVNw24oAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x115ac4048>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from mlxtend.data import iris_data\n",
    "from mlxtend.evaluate import plot_decision_regions\n",
    "from mlxtend.tf_classifier import TfMultiLayerPerceptron\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# Loading Data\n",
    "\n",
    "X, y = iris_data()\n",
    "X = X[:, [0, 3]] # sepal length and petal width\n",
    "\n",
    "# standardize\n",
    "X[:,0] = (X[:,0] - X[:,0].mean()) / X[:,0].std()\n",
    "X[:,1] = (X[:,1] - X[:,1].mean()) / X[:,1].std()\n",
    "\n",
    "mlp = TfMultiLayerPerceptron(eta=0.5, \n",
    "                             epochs=100, \n",
    "                             hidden_layers=[10],\n",
    "                             activations=['logistic'],\n",
    "                             print_progress=3, \n",
    "                             optimizer='gradientdescent',\n",
    "                             minibatches=10, \n",
    "                             random_seed=1)\n",
    "\n",
    "mlp.fit(X, y)\n",
    "\n",
    "plt.plot(range(len(mlp.cost_)), mlp.cost_)\n",
    "plt.xlabel('Iterations')\n",
    "plt.ylabel('Cost')\n",
    "plt.show()\n",
    "\n",
    "plot_decision_regions(X, y, clf=mlp)\n",
    "plt.title('MLP - Minibatch Stochastic Gradient Descent')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example 3 - MNIST"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Please note that `mnist_data` just contains a random 5000-sample subset of MNIST (~10% of the original dataset size) suitable for demonstration purposes regarding computational efficiency."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Although it may be overkill, and the network may terribly overfit the training data, let us initialize a more complex neural network with 2 hidden layers and 200 ReLU (Rectifier Linear Units) each."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Iteration: 30/30 | Cost 35.72 | Elapsed: 0:00:08 | ETA: 0:00:00"
     ]
    },
    {
     "data": {
      "image/png": "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\nZoO8EO2ajaIAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1141124a8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from mlxtend.data import mnist_data\n",
    "from mlxtend.tf_classifier import TfMultiLayerPerceptron\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "X, y = mnist_data()\n",
    "\n",
    "mlp = TfMultiLayerPerceptron(eta=0.01, \n",
    "                             epochs=30, \n",
    "                             hidden_layers=[200, 200],\n",
    "                             activations=['relu', 'relu'],\n",
    "                             print_progress=3, \n",
    "                             minibatches=5, \n",
    "                             optimizer='adam',\n",
    "                             random_seed=1)\n",
    "\n",
    "mlp.fit(X, y)\n",
    "\n",
    "plt.plot(range(len(mlp.cost_)), mlp.cost_)\n",
    "plt.xlabel('Iterations')\n",
    "plt.ylabel('Cost')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training Accuracy: 99.78%\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "y_pred = mlp.predict(X)\n",
    "print('Training Accuracy: %.2f%%' % (mlp.score(X, y) * 100))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nEXPCL1JcQnDGsO0zgOdGe1JPTw8dHUO/7GD//Uf7UtzW193dnbuFhmrn/XPfWlcj9q+3t5fe3t4h\n2/r7+ys/vyEX8ImIB4AHU0oXlPeD4kpb/5hSunxYbSewYsWKFW39gYCkXUdfXx9dXV0AXSmlvrFq\nG7U64grg+ohYwe+XqE2h+KpwSVKpISGcUlpafsvAVyimIX4FHFd+e4IkqdSwM+ZSSouBxY16fUlq\nB66OkKSMDGFJysgQlqSMDGFJysgQlqSMDGFJysgQlqSMDGFJysgQlqSMDGFJysgQlqSMDGFJysgQ\nlqSMDGFJysgQlqSMDGFJysgQlqSMDGFJysgQlqSMDGFJysgQlqSMDGFJysgQlqSMDGFJysgQlqSM\nDGFJysgQlqSMDGFJysgQlqSMDGFJysgQlqSMDGFJysgQlqSMDGFJysgQlqSMDGFJysgQlqSMDGFJ\nysgQlqSMDGFJysgQlqSMDGFJysgQlqSMDGFJysgQlqSM6h7CEbEwIt4adnu03u8jSe1gtwa97iPA\nMUCU999s0PtIUktrVAi/mVJ6oUGvLUlto1Fzwu+LiGciYnVE3BgR+zbofSSppTUihB8AzgKOA84F\nDgDuiYipDXgvSWppdZ+OSCktG3T3kYh4CPgdcApw3WjP6+npoaOjY8i27u5uuru7692iJNVNb28v\nvb29Q7b19/dXfn6klOrd0/ZvUgTxnSmlvxvhsU5gxYoVK+js7Gx4L5LUaH19fXR1dQF0pZT6xqpt\n+DrhiPgDYBbwbKPfS5JaTSPWCV8eER+OiP0j4k+BHwFbgd4dPFWSdjmNWKL2bmAJMB14AbgPOCKl\ntKEB7yVJLa0RH8z5SVoTevPN6ufLvPzyy5VrV61aVbn27rvvrlzbLK655prKtevWratcu99++1Wu\nPeeccyrXzp8/v3Lt3nvvXbl2jz32qFyr2njtCEnKyBCWpIwMYUnKyBCWpIwMYUnKyBCWpIwMYUnK\nyBCWpIwMYUnKyBCWpIx2yqUsx2zAS1mO24YN1S/HceaZZ1auvf3228fTjlrM3LlzK9eef/75lWs/\n/vGPj6edttJUl7KUJI3OEJakjAxhScrIEJakjAxhScrIEJakjAxhScrIEJakjAxhScrIEJakjBrx\nlfeagFpOI7/00ksr1zbqVOTddqv+I3TKKadUrn3/+98/nnba0sqVKyvXLl26tHLtL37xi4b0MGXK\nlMq1xx9/fOVagIioqb4VOBKWpIwMYUnKyBCWpIwMYUnKyBCWpIwMYUnKyBCWpIwMYUnKyBCWpIwM\nYUnKyNOWm8xll11Wufaqq65qSA+zZ8+uXPvLX/6ycu3UqVPH045q8L3vfa9y7bXXXlu5dsGCBZVr\nTzjhhMq1F154YeVagIULF1aureWU+pwcCUtSRoawJGVkCEtSRoawJGVkCEtSRoawJGVkCEtSRoaw\nJGVkCEtSRoawJGUUtXy7b0MaiOgEVqxYsYLOzs6svTTK66+/Xrn22GOPrVxby7fl1nIq8sMPP1y5\ndvLkyZVr1Vw2b95cubaWb79es2bNOLqp5vnnn69cO3369Ib1sSN9fX10dXUBdKWU+saqrXkkHBFH\nRsSPI+KZiHgrIk4coeYrEbEuIjZHxJ0RMavW95GkXcF4piOmAr8CzgO2G0ZHxOeBzwDzgQ8Bm4Bl\nETFpAn1KUluq+TJDKaU7gDsAIiJGKLkAuDSldGtZcwawHjgJWDr+ViWp/dT1g7mIOACYCdw1sC2l\ntBF4EJhTz/eSpHZQ79URMymmKNYP276+fEySNIhL1CQpo3pfev45IIAZDB0NzwDGXPfU09NDR0fH\nkG3d3d10d3fXuUVJqp/e3l56e3uHbOvv76/8/LqGcErpyYh4DjgG+H8AETENOBz41ljPXbRoUduu\nE5bUvkYaLA5aJ7xDNYdwREwFZlGMeAHeGxGHAi+llJ4GrgQuiogngDXApcBa4JZa30uS2t14RsIf\nBO6m+AAuAd8st98AfDKldFlETAGuAfYC7gWOTym9UYd+JamtjGed8M/ZwQd6KaVLgEvG11L7eeWV\nVyrX1nIqci0uvvjiyrWeity6arkMwRe+8IXKtY08FXlX5+oIScrIEJakjAxhScrIEJakjAxhScrI\nEJakjAxhScrIEJakjAxhScrIEJakjOp9KUs1qeGXCVV7WrJkSeXab31rzAsbjtsee+xRufa0006r\n6bWnTp1aaztNz5GwJGVkCEtSRoawJGVkCEtSRoawJGVkCEtSRoawJGVkCEtSRoawJGVkCEtSRp62\nLLWRc889N3cLnHTSSZVrv/vd7zawk9bgSFiSMjKEJSkjQ1iSMjKEJSkjQ1iSMjKEJSkjQ1iSMjKE\nJSkjQ1iSMjKEJSkjQ1iSMvLaETvBlClTKtcedNBBlWsfe+yx8bSjJrBhw4bKtZdccknl2s2bN4+j\nmx076qijKtdef/31DemhXTkSlqSMDGFJysgQlqSMDGFJysgQlqSMDGFJysgQlqSMDGFJysgQlqSM\nDGFJysjTlneCWk5bPvTQQyvX1nLa8i233FK5dt68eZVr9Xs333xz5doFCxZUrl29evV42tmhjo6O\nyrWLFi2qXDtp0qTxtLPLqnkkHBFHRsSPI+KZiHgrIk4c9vh15fbBt9vq17IktY/xTEdMBX4FnAek\nUWpuB2YAM8tb97i6k6Q2V/N0RErpDuAOgIiIUcpeTym9MJHGJGlX0KgP5o6OiPUR8VhELI6IdzTo\nfSSppTXig7nbgZuAJ4E/Br4G3BYRc1JKo01fSNIuqe4hnFJaOujuryNiJbAaOBq4e7Tn9fT0bPdp\nbXd3N93dTidLal69vb309vYO2dbf31/5+Q1fopZSejIiXgRmMUYIL1q0iM7Ozka3I0l1NdJgsa+v\nj66urkrPb/jJGhHxbmA68Gyj30uSWk3NI+GImEoxqh1YGfHeiDgUeKm8LaSYE36urPsG8DiwrB4N\nS1I7Gc90xAcpphVSeftmuf0GirXDfwKcAewFrKMI34tTSlsn3K0ktZnxrBP+OWNPY/zF+NtRoyxZ\nsqRy7Zw5cyrXnn766ZVrd99998q1tdi2bVvl2nvvvbem167lm4Nr+TuupedGueGGGyrX1nI6vWrj\nBXwkKSNDWJIyMoQlKSNDWJIyMoQlKSNDWJIyMoQlKSNDWJIyMoQlKSNDWJIy8tuWm8wVV1xRufb+\n+++vXPv0009Xrj3nnHMq137uc5+rXPu2tzXm3/xavivg5ZdfbkgPzWL27NmVa4844ogGdqKqHAlL\nUkaGsCRlZAhLUkaGsCRlZAhLUkaGsCRlZAhLUkaGsCRlZAhLUkaGsCRl5GnLTWbmzJmVax966KHK\ntYcddljl2rVr11au7e/vr1yr8dlnn30q165cubJy7W67+b9/M3AkLEkZGcKSlJEhLEkZGcKSlJEh\nLEkZGcKSlJEhLEkZGcKSlJEhLEkZGcKSlJHnLbawd73rXZVrazmd9ZVXXqlc+/3vf79y7auvvlq5\nthaTJ0+uXDt//vyaXvvkk0+uXLt8+fKaXruqr3/965VrPRW59TgSlqSMDGFJysgQlqSMDGFJysgQ\nlqSMDGFJysgQlqSMDGFJysgQlqSMDGFJyshzHHcR06ZNa0jtl770pfG0k83GjRtrqn/22Wcb0sep\n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\nB3lZiONMKPvaAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11424dcf8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_digit(X, y, idx):\n",
    "    img = X[idx].reshape(28,28)\n",
    "    plt.imshow(img, cmap='Greys',  interpolation='nearest')\n",
    "    plt.title('true label: %d' % y[idx])\n",
    "    plt.show()\n",
    "plot_digit(X, y, 4999)  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Prediction: 9\n"
     ]
    }
   ],
   "source": [
    "print('Prediction: %d' % mlp.predict(X[4999, None]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## API"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "## TfMultiLayerPerceptron\n",
      "\n",
      "*TfMultiLayerPerceptron(eta=0.5, epochs=50, hidden_layers=[50, 10], n_classes=None, activations=['logistic', 'logistic'], optimizer='gradientdescent', momentum=0.0, l1=0.0, l2=0.0, dropout=1.0, decay=[0.0, 1.0], minibatches=1, random_seed=None, print_progress=0, dtype=None)*\n",
      "\n",
      "Multi-layer perceptron classifier.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `eta` : float (default: 0.5)\n",
      "\n",
      "    Learning rate (between 0.0 and 1.0)\n",
      "\n",
      "- `epochs` : int (default: 50)\n",
      "\n",
      "    Passes over the training dataset.\n",
      "    Prior to each epoch, the dataset is shuffled\n",
      "    if `minibatches > 1` to prevent cycles in stochastic gradient descent.\n",
      "\n",
      "- `hidden_layers` : list (default: [50, 10])\n",
      "\n",
      "    Number of units per hidden layer. By default 50 units in the\n",
      "    first hidden layer, and 10 hidden units in the second hidden layer.\n",
      "\n",
      "- `n_classes` : int (default: None)\n",
      "\n",
      "    A positive integer to declare the number of class labels\n",
      "    if not all class labels are present in a partial training set.\n",
      "    Gets the number of class labels automatically if None.\n",
      "\n",
      "- `activations` : list (default: ['logistic', 'logistic'])\n",
      "\n",
      "    Activation functions for each layer.\n",
      "    Available actiavtion functions:\n",
      "    \"logistic\", \"relu\", \"tanh\", \"relu6\", \"elu\", \"softplus\", \"softsign\"\n",
      "\n",
      "- `optimizer` : str (default: \"gradientdescent\")\n",
      "\n",
      "    Optimizer to minimize the cost function:\n",
      "    \"gradientdescent\", \"momentum\", \"adam\", \"ftrl\", \"adagrad\"\n",
      "\n",
      "- `momentum` : float (default: 0.0)\n",
      "\n",
      "    Momentum constant for momentum learning; only applies if\n",
      "    optimizer='momentum'\n",
      "\n",
      "- `l1` : float (default: 0.0)\n",
      "\n",
      "    L1 regularization strength; only applies if optimizer='ftrl'\n",
      "\n",
      "- `l2` : float (default: 0.0)\n",
      "\n",
      "    regularization strength; only applies if optimizer='ftrl'\n",
      "\n",
      "- `dropout` : float (default: 1.0)\n",
      "\n",
      "    A float between in the range (0.0, 1.0] to specify\n",
      "    the probability that each element is kept.\n",
      "\n",
      "- `decay` : list, shape=[decay_rate, decay_steps] (default: [0.0, 1])\n",
      "\n",
      "    Parameter to specify the exponential decay of the learning rate eta\n",
      "    for adaptive learning (eta * decay_rate ^ (epoch / decay_steps)).\n",
      "\n",
      "- `minibatches` : int (default: 1)\n",
      "\n",
      "    Divide the training data into *k* minibatches\n",
      "    for accelerated stochastic gradient descent learning.\n",
      "    Gradient Descent Learning if `minibatches` = 1\n",
      "    Stochastic Gradient Descent learning if `minibatches` = len(y)\n",
      "    Minibatch learning if `minibatches` > 1\n",
      "\n",
      "- `random_seed` : int (default: None)\n",
      "\n",
      "    Set random state for shuffling and initializing the weights.\n",
      "\n",
      "- `print_progress` : int (default: 0)\n",
      "\n",
      "    Prints progress in fitting to stderr.\n",
      "    0: No output\n",
      "    1: Epochs elapsed and cost\n",
      "    2: 1 plus time elapsed\n",
      "    3: 2 plus estimated time until completion\n",
      "\n",
      "- `dtype` : Array-type (default: None)\n",
      "\n",
      "    Uses tensorflow.float32 if None.\n",
      "\n",
      "**Attributes**\n",
      "\n",
      "- `w_` : 2d-array, shape=[n_features, n_classes]\n",
      "\n",
      "    Weights after fitting.\n",
      "\n",
      "- `b_` : 1D-array, shape=[n_classes]\n",
      "\n",
      "    Bias units after fitting.\n",
      "\n",
      "- `cost_` : list\n",
      "\n",
      "    List of floats, the average cross_entropy for each epoch.\n",
      "\n",
      "### Methods\n",
      "\n",
      "<hr>\n",
      "\n",
      "*fit(X, y, init_params=True)*\n",
      "\n",
      "Learn model from training data.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n",
      "\n",
      "    Training vectors, where n_samples is the number of samples and\n",
      "    n_features is the number of features.\n",
      "\n",
      "- `y` : array-like, shape = [n_samples]\n",
      "\n",
      "    Target values.\n",
      "\n",
      "- `init_params` : bool (default: True)\n",
      "\n",
      "    Re-initializes model parameters prior to fitting.\n",
      "    Set False to continue training with weights from\n",
      "    a previous model fitting.\n",
      "\n",
      "**Returns**\n",
      "\n",
      "- `self` : object\n",
      "\n",
      "\n",
      "<hr>\n",
      "\n",
      "*predict(X)*\n",
      "\n",
      "Predict class labels of X.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n",
      "\n",
      "    Training vectors, where n_samples is the number of samples and\n",
      "    n_features is the number of features.\n",
      "\n",
      "**Returns**\n",
      "\n",
      "- `class_labels` : array-like, shape = [n_samples]\n",
      "\n",
      "    Predicted class labels.\n",
      "\n",
      "<hr>\n",
      "\n",
      "*predict_proba(X)*\n",
      "\n",
      "Predict class probabilities of X from the net input.\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n",
      "\n",
      "    Training vectors, where n_samples is the number of samples and\n",
      "    n_features is the number of features.\n",
      "\n",
      "**Returns**\n",
      "\n",
      "- `Class probabilties` : array-like, shape= [n_samples, n_classes]\n",
      "\n",
      "\n",
      "<hr>\n",
      "\n",
      "*score(X, y)*\n",
      "\n",
      "Compute the prediction accuracy\n",
      "\n",
      "**Parameters**\n",
      "\n",
      "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n",
      "\n",
      "    Training vectors, where n_samples is the number of samples and\n",
      "    n_features is the number of features.\n",
      "\n",
      "- `y` : array-like, shape = [n_samples]\n",
      "\n",
      "    Target values (true class labels).\n",
      "\n",
      "**Returns**\n",
      "\n",
      "- `acc` : float\n",
      "\n",
      "    The prediction accuracy as a float\n",
      "    between 0.0 and 1.0 (perfect score).\n",
      "\n",
      "\n"
     ]
    }
   ],
   "source": [
    "with open('../../api_modules/mlxtend.tf_classifier/TfMultiLayerPerceptron.md', 'r') as f:\n",
    "    print(f.read())"
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
